Posicionar componentes

Descripcion

Como posicionar los componentes en una aplicación gráfica con swing.

GridBagLayout

Para utilizar el GridBagLayout, primero tenemos que establecer el layout despues de obtener el panel principal, tal que así:

Container contenedor = getContentPane();
contenedor.setLayout(new GridBagLayout());

NOTA: Para usar el GridBagLayout tenemos que tener el siguiente import:

import java.awt.*;

Despues para introducir los componentes en el contendor tenemos que definir las propiedades que tendrá el elemento dentro del grid, lo hacemos de la siguiente manera usando un GridBagConstraints (en el siguiente código introducimos 3 botones):

        GridBagConstraints gridConstraints = new GridBagConstraints();

        gridConstraints.gridx = 0;
        gridConstraints.gridy = 0;
        gridConstraints.weightx = 1.0;
        gridConstraints.weighty = 1.0;
        gridConstraints.fill = GridBagConstraints.BOTH;
        gridConstraints.insets = new Insets(5, 5, 5, 5);

        JButton boton1 = new JButton("Boton1");
        contenedor.add(boton1, gridConstraints);

        gridConstraints.gridx = 1;
        gridConstraints.gridy = 0;
        gridConstraints.weightx = 1.0;
        gridConstraints.weighty = 1.0;
        gridConstraints.fill = GridBagConstraints.BOTH;
        gridConstraints.insets = new Insets(5, 5, 5, 5);

        JButton boton2 = new JButton("Boton2");
        contenedor.add(boton2, gridConstraints);

        gridConstraints.gridx = 0;
        gridConstraints.gridy = 1;
        gridConstraints.weightx = 1.0;
        gridConstraints.weighty = 1.0;
        gridConstraints.gridwidth = 2;
        gridConstraints.fill = GridBagConstraints.BOTH;
        gridConstraints.insets = new Insets(5, 5, 5, 5);

        JButton boton3 = new JButton("Boton3");
        contenedor.add(boton3, gridConstraints);

El código completo de la aplicación es el siguiente:

 import java.awt.*;
import javax.swing.*;

public class ButtonApp extends JFrame{

    public ButtonApp() {

        Container contenedor = getContentPane();
        contenedor.setLayout(new GridBagLayout());

        GridBagConstraints gridConstraints = new GridBagConstraints();

        gridConstraints.gridx = 0;
        gridConstraints.gridy = 0;
        gridConstraints.weightx = 1.0;
        gridConstraints.weighty = 1.0;
        gridConstraints.fill = GridBagConstraints.BOTH;
        gridConstraints.insets = new Insets(5, 5, 5, 5);

        JButton boton1 = new JButton("Boton1");
        contenedor.add(boton1, gridConstraints);

        gridConstraints.gridx = 1;
        gridConstraints.gridy = 0;
        gridConstraints.weightx = 1.0;
        gridConstraints.weighty = 1.0;
        gridConstraints.fill = GridBagConstraints.BOTH;
        gridConstraints.insets = new Insets(5, 5, 5, 5);

        JButton boton2 = new JButton("Boton2");
        contenedor.add(boton2, gridConstraints);

        gridConstraints.gridx = 0;
        gridConstraints.gridy = 1;
        gridConstraints.weightx = 1.0;
        gridConstraints.weighty = 1.0;
        gridConstraints.gridwidth = 2;
        gridConstraints.fill = GridBagConstraints.BOTH;
        gridConstraints.insets = new Insets(5, 5, 5, 5);

        JButton boton3 = new JButton("Boton3");
        contenedor.add(boton3, gridConstraints);

        pack();
        setVisible(true);
        setResizable(true);
        setSize(300, 200);
        setTitle("Grid example");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new ButtonApp();
    }
}

El resultado final es este:

Ejercicios

Conseguir los siguientes resultados:

Tags

Java | Swing | GridBagLayout